import { IcallbackFn, Ifn, Ioptions } from "../types"
import oracle from "../oracle"
import type { Response } from "express"
/**
 *
 * @param {Ioptions} options 传入的参数对象
 * @param {Response} res router中的res参数
 * @param {Ifn} connFn oracle中定义的函数,需要在js中执行的函数
 *
 * 回调函数 把执行sql的动作统一执行,不需要在每一个js中写了
 * 每个js只需拿到sql和oracle的函数即可
 */

const callbackFn: IcallbackFn = (
  res: Response,
  connFn: Ifn,
  options: Ioptions
) => {
  //需要加上bind,否则this没有绑定
  connFn
    .bind(oracle)(options)
    .then((result: Object) => {
      res.send(result)
    })
    .catch((err: any) => {
      res.send(err)
    })
}

export default callbackFn
